VkRenderPass render_pass;
GskVulkanPipelineLayout *layout;
GskVulkanUploader *uploader;
+ GskVulkanBuffer *vertex_buffer;
GHashTable *descriptor_set_indexes;
VkDescriptorPool descriptor_pool;
gsk_vulkan_render_draw (GskVulkanRender *self,
VkSampler sampler)
{
- GskVulkanBuffer *buffer;
VkCommandBuffer command_buffer;
GSList *l;
guint i;
command_buffer = gsk_vulkan_command_pool_get_buffer (self->command_pool);
- buffer = gsk_vulkan_render_collect_vertex_data (self);
+ self->vertex_buffer = gsk_vulkan_render_collect_vertex_data (self);
vkCmdSetViewport (command_buffer,
0,
for (l = self->render_passes; l; l = l->next)
{
- gsk_vulkan_render_pass_draw (l->data, self, buffer, self->layout, command_buffer);
+ gsk_vulkan_render_pass_draw (l->data, self, self->vertex_buffer, self->layout, command_buffer);
}
vkCmdEndRenderPass (command_buffer);
gsk_vulkan_command_pool_submit_buffer (self->command_pool, command_buffer, self->fence);
- gsk_vulkan_buffer_free (buffer);
-
if (GSK_RENDER_MODE_CHECK (SYNC))
{
GSK_VK_CHECK (vkWaitForFences, gdk_vulkan_context_get_device (self->vulkan),
gsk_vulkan_command_pool_reset (self->command_pool);
+ g_clear_pointer (&self->vertex_buffer, gsk_vulkan_buffer_free);
+
g_hash_table_remove_all (self->descriptor_set_indexes);
GSK_VK_CHECK (vkResetDescriptorPool, device,
self->descriptor_pool,